package com.vhall.component.controller.livecolumn;

import com.vhall.component.entity.audit.vo.AuditRecordResponseVO;
import com.vhall.component.entity.livecolumn.vo.*;
import com.vhall.component.entity.page.vo.PageVO;
import com.vhall.component.plugin.common.annotation.TokenAuth;
import com.vhall.component.service.livecolumn.LiveColumnService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

/**
 * 栏目管理
 *
 * @author xing.wang
 * @date 2023/8/5
 */
@RestController
@RequestMapping("/v4/live-column/console")
public class LiveColumnConsoleController {
    @Resource
    private LiveColumnService liveColumnService;

    /**
     * 创建栏目
     * @param vo
     * @return
     */
    @TokenAuth
    @PostMapping("/create")
    public LiveColumnCreateResponseVO create(@Validated LiveColumnCreateRequestVO vo){
        return liveColumnService.create(vo);
    }
    /**
     * 更新栏目
     * @param vo
     * @return
     */
    @TokenAuth
    @PostMapping("/update")
    public LiveColumnUpdateResponseVO update(@Validated LiveColumnUpdateRequestVO vo){
        return liveColumnService.update(vo);
    }

    /**
     * 删除栏目
     * @param vo
     * @return
     */
    @TokenAuth
    @PostMapping("/delete")
    public Boolean update(@Validated LiveColumnDeleteRequestVO vo){
        return liveColumnService.delete(vo);
    }
    /**
     * 获取单个栏目信息记录
     * @param vo
     * @return
     */
    @TokenAuth
    @GetMapping("/get")
    public LiveColumnInfoResponseVO get(@Validated LiveColumnInfoRequestVO vo){
        return liveColumnService.getLiveColumn(vo);
    }
    /**
     * 获取栏目信息列表
     * @param vo
     * @return
     */
    @TokenAuth
    @PostMapping("/page-list")
    public PageVO<LiveColumnBaseResponseVO> pageList(@Validated LiveColumnPageListRequestVO vo){
        return liveColumnService.pageList(vo);
    }

    /**
     * 获取审核栏目信息列表
     * @param vo
     * @return
     */
    @TokenAuth
    @GetMapping("/audit-page-list")
    public PageVO<LiveColumnAuditListResponseVO> auditPageList(@Validated LiveColumnPageListRequestVO vo){
        return liveColumnService.auditPageList(vo);
    }

    /**
     * 进行栏目审核
     * @param vo
     * @return
     */
    @TokenAuth
    @PostMapping("/audit")
    public  Boolean auditLiveColumn(@Validated AuditLiveColumnRequestVO vo){
        return liveColumnService.auditLiveColumn(vo);
    }

    /**
     * 获取单个栏目审核记录列表
     * @param vo
     * @return
     */
    @TokenAuth
    @GetMapping("/audit-record/list")
    public  List<AuditRecordResponseVO> liveColumnAuditRecordList(@Validated LiveColumnAuditRecordListRequestVO vo){
        return liveColumnService.liveColumnAuditRecordList(vo);
    }

    /**
     * 获取当前角色下所有的栏目信息
     * @return
     */
    @TokenAuth
    @GetMapping("/role-column-list")
    public List<LiveColumnBaseResponseVO> roleAllLiveColumnList(){
        return liveColumnService.roleAllLiveColumnList();
    }


}
